package com.gdust.gkyx.common.auth;

import com.gdust.gkyx.vo.user.UserLoginVo;

/**
 * ClassName: AuthContextHolder
 * Package: com.gdust.gkyx.common.auth
 * Description:ThreadLocal工具类，用于管理与用户相关的信息（如用户ID、仓库ID、用户登录信息）
 *
 * @Author syun
 * @Create 2025/1/27 23:23
 * @Version 1.0
 */
public class AuthContextHolder {

    //用户id
    private static ThreadLocal<Long> userId = new ThreadLocal<>();

    //用户仓库id
    private static ThreadLocal<Long> wareId = new ThreadLocal<>();

    //用户信息对象
    private static ThreadLocal<UserLoginVo> userLoginVo = new ThreadLocal<>();


    /**
     * //userId操作的方法
     * 设置用户ID到当前线程的上下文中
     *
     * @param _userId 用户ID
     */
    public static void setUserId(Long _userId) {
        userId.set(_userId);
    }

    /**
     * 获取当前线程中存储的用户ID
     *
     * @return 用户ID，如果当前线程未设置，返回null
     */
    public static Long getUserId() {
        return userId.get();
    }

    /**
     * 获取当前线程中存储的用户仓库ID
     *
     * @return 用户仓库ID，如果当前线程未设置，返回null
     */
    public static Long getWareId(){
        return wareId.get();
    }


    /**
     * 设置用户仓库ID到当前线程的上下文中
     *
     * @param _wareId 用户仓库ID
     */
    public static void setWareId(Long _wareId){
        wareId.set(_wareId);
    }


    /**
     * 获取当前线程中存储的用户登录信息
     *
     * @return 用户登录信息对象，如果当前线程未设置，返回null
     */
    public static UserLoginVo getUserLoginVo() {
        return userLoginVo.get();
    }

    /**
     * 设置用户登录信息到当前线程的上下文中
     *
     * @param _userLoginVo 用户登录信息对象
     */
    public static void setUserLoginVo(UserLoginVo _userLoginVo) {
        userLoginVo.set(_userLoginVo);
    }


}

